【翻译+解读】从官方Titanic案例打开kaggle机器学习之路(中)
点击上图开始学习韦玮老师最新网络爬虫课程
作者:王大伟
Python爱好者社区唯一小编
博客:https://ask.hellobi.com/blog/wangdawei
本文代码和数据获取方式:关注Python爱好者社区,回复泰坦尼克
前文传送门:【翻译+解读】从官方Titanic案例打开kaggle机器学习之路(上)
有争议的数据
我们对数据做出了一些假设和结论。到目前为止,我们不必改变单个特征为了达到目的。我们现在来执行我们的决定和假设来纠正,创建和完成目标。
通过删除特征来修正模型
这是一个很好的开端。通过删除特征,我们就处理更少的数据。加快了运行速度,简化了分析。
基于我们的假设和之前得出的结论,我们希望删除客舱(数据修正假设2)和船票信息(数据修正假设1)特征。
请注意,我们一起对训练和测试数据集都执行操作,以保持一致。
从现有的创建新的特征提取
在删除姓名和乘客ID特征前,我们想要分析是否可以设计一个姓名特征,通过提取称谓并测试称谓和生存之间的相关性。
在下面的代码中,我们使用正则表达式提取称谓特征。正则表达式模式(\ w + \。)匹配名称特征中以点号字符结尾的第一个单词。 expand = False标志返回一个DataFrame。
我们我们可以用更常见的名称替换许多称谓,或将它们归类为少数类:
我们可以将类别类型的称谓转换为序号表示:
观察
当我们绘制称谓,年龄和生存特征时,我们注意到以下情况:
大多数称谓的年龄组别是准确的
称谓年龄组别的生存情况略有差异
某些头衔大多存活下来(例如Mme,Lady,Sir)或者没有存活(例如:Don,Rev,Jonkheer)
决策
我们决定保留新的称谓特征来训练模型
转换类别类型的特征
现在,我们可以将包含字符串的特征转换为数值类型特征,这是大多数模型算法所要求的。这样做也将帮助我们实现功能完成目标。
我们开始将性别(Sex)特征转换为名为性别(Gender)的新特征,其中女性取值为1,男性取值为0。
完成一个数值型连续特征
现在我们应该开始估计并填充有着缺少值或空值的特征。我们先来对Age特征进行处理。
我们可以考虑三种方法来填充连续数值特征。
1. 一个简单的方法是在均值和标准差之间生成随机数。
2. 猜测缺失值的更准确的方法是使用其他相关特征。 在我们的案例中,我们注意到年龄,性别和Pclass之间的相关性。 使用Pclass和Gender特征组合中Age的中位数值猜测年龄值。 因此,Pclass = 1和Gender = 0组合的中位数年龄,Pclass = 1和Gender = 1,等等......
3. 结合方法1和2.因此,不要根据中位数猜测年龄值,而根据Pclass和Gender组合,使用平均值和标准差之间的随机数。
方法1和3将在我们的模型中引入随机噪声。 多次执行的结果可能会有所不同。 我们更喜欢方法2。
让我们开始准备一个空数组,以包含基于Pclass x Gender组合的猜测年龄值。
现在我们遍历Sex(0或1)和Pclass(1,2,3)来计算6种组合的Age的猜测值。
让我们创建年龄段并确定与Survived的相关性:
让我们用基于这些段来用数字替换掉Age:
我们现在能将年龄段的特征删除了:
结合现有特征创建新特征
我们可以为Parch(父母与小孩个数)和SibSp(堂兄弟/妹个数)结合的家庭规模创建一个新功能。 这将使我们能够从我们的数据集中删除Parch和SibSp特征。
我们可以创建另一个称为IsAlone(单人)的特征:
我们放弃Parch,SibSp和FamilySize特征,使用IsAlone特征:
我们还可以创建一个结合Pclass和Age的人工特征:
完成分类特征
登船港口特征需要基于登乘港口的S,Q,C值。 我们的训练数据集有两个缺失值。 我们使用众数填补这些缺失值。
将类别特征转换为数值特征
我们现在可以通过创建一个新的数值型特征Port来转换EmbarkedFill特征。
快速完成并转换数字特征
我们现在补齐船票(Fare)特征,使用出现最多的情况填充。
我们还想将票价四舍五入到小数点后两位,因为它代表货币。
我们能创建船票分段的特征:
根据FareBand(船票分段)将票价特征转换为序数值:
测试集上:
未完待续~
韦玮老师网络爬虫最新课程火爆促销中!
20章节只需299!
扫码下图或点击阅读原文即可试听学习